package com.hbb20.utils;

import ohos.agp.utils.Point;
import ohos.agp.window.service.Display;
import ohos.agp.window.service.DisplayManager;
import ohos.app.Context;

public class SystemUtils {

    /**
     * fp2px
     *
     * @param context context
     * @param fp      fp
     * @return float float
     */
    public static float fp2px(Context context, float fp) {
        Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
        float sca = display.getAttributes().scalDensity;
        return fp * sca + 0.5f * (fp >= 0 ? 1 : -1);
    }

    /**
     * vp2px
     *
     * @param context context
     * @param vp      vp
     * @return float float
     */
    public static float vp2px(Context context, float vp) {
        Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
        float dpi = display.getAttributes().densityPixels;
        return vp * dpi + 0.5f * (vp >= 0 ? 1 : -1);
    }

    /**
     * px2vp
     *
     * @param context context
     * @param pxValue pxValue
     * @return int int
     */
    public static int px2vp(Context context, float pxValue) {
        Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
        float dpi = display.getAttributes().densityPixels;
        return (int) (pxValue / dpi + 0.5f);
    }

    /**
     * getDisplayWidthInPx
     *
     * @param context context
     * @return int int
     */
    public static int getDisplayWidthInPx(Context context) {
        Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
        Point point = new Point();
        display.getSize(point);
        return (int) point.getPointX();
    }

    /**
     * getDisplayHightInPx
     *
     * @param context context
     * @return int int
     */
    public static int getDisplayHightInPx(Context context) {
        Display display = DisplayManager.getInstance().getDefaultDisplay(context).get();
        Point point = new Point();
        display.getSize(point);
        return (int) point.getPointY();
    }

}
